using System;
using System.Collections.Generic;
using ns26;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("SpellController")]
	public class SpellController : MonoBehaviour
	{
		public static float FINISH_FUDGE_SEC => MonoClass.smethod_6<float>(TritonHs.MainAssemblyPath, "", "SpellController", "FINISH_FUDGE_SEC");

		public Card m_source => method_3<Card>("m_source");

		public List<Card> m_targets => method_3<Class271<Card>>("m_targets")?.method_25();

		public PowerTaskList m_taskList => method_3<PowerTaskList>("m_taskList");

		public int m_taskListId => method_2<int>("m_taskListId");

		public bool m_processingTaskList => method_2<bool>("m_processingTaskList");

		public bool m_pendingFinish => method_2<bool>("m_pendingFinish");

		public SpellController(IntPtr address, string className)
			: base(address, className)
		{
		}

		public SpellController(IntPtr address)
			: this(address, "SpellController")
		{
		}

		public Card GetSource()
		{
			return method_14<Card>("GetSource", Array.Empty<object>());
		}

		public void SetSource(Card card)
		{
			method_8("SetSource", card);
		}

		public bool IsSource(Card card)
		{
			return method_11<bool>("IsSource", new object[1] { card });
		}

		public void RemoveSource()
		{
			method_8("RemoveSource");
		}

		public List<Card> GetTargets()
		{
			return method_14<Class271<Card>>("GetTargets", Array.Empty<object>())?.method_25();
		}

		public Card GetTarget()
		{
			return method_14<Card>("GetTarget", Array.Empty<object>());
		}

		public void AddTarget(Card card)
		{
			method_8("AddTarget", card);
		}

		public void RemoveTarget(Card card)
		{
			method_8("RemoveTarget", card);
		}

		public void RemoveAllTargets()
		{
			method_8("RemoveAllTargets");
		}

		public bool IsTarget(Card card)
		{
			return method_11<bool>("IsTarget", new object[1] { card });
		}

		public bool IsProcessingTaskList()
		{
			return method_11<bool>("IsProcessingTaskList", Array.Empty<object>());
		}

		public PowerTaskList GetPowerTaskList()
		{
			return method_14<PowerTaskList>("GetPowerTaskList", Array.Empty<object>());
		}

		public bool AttachPowerTaskList(PowerTaskList taskList)
		{
			return method_11<bool>("AttachPowerTaskList", new object[1] { taskList });
		}

		public void SetPowerTaskList(PowerTaskList taskList)
		{
			method_8("SetPowerTaskList", taskList);
		}

		public PowerTaskList DetachPowerTaskList()
		{
			return method_14<PowerTaskList>("DetachPowerTaskList", Array.Empty<object>());
		}

		public void DoPowerTaskList()
		{
			method_8("DoPowerTaskList");
		}

		public void ForceKill()
		{
			method_8("ForceKill");
		}

		public bool ShouldReconnectIfStuck()
		{
			return method_11<bool>("ShouldReconnectIfStuck", Array.Empty<object>());
		}

		public void OnProcessTaskList()
		{
			method_8("OnProcessTaskList");
		}

		public void OnFinishedTaskList()
		{
			method_8("OnFinishedTaskList");
		}

		public void OnFinished()
		{
			method_8("OnFinished");
		}

		public bool AddPowerSourceAndTargets(PowerTaskList taskList)
		{
			return method_11<bool>("AddPowerSourceAndTargets", new object[1] { taskList });
		}

		public bool HasSourceCard(PowerTaskList taskList)
		{
			return method_11<bool>("HasSourceCard", new object[1] { taskList });
		}

		public bool IsCardBusy(Card card)
		{
			return method_11<bool>("IsCardBusy", new object[1] { card });
		}

		public bool WillEntityLoadCard(Entity entity)
		{
			return method_11<bool>("WillEntityLoadCard", new object[1] { entity });
		}

		public void FireFinishedTaskListCallbacks()
		{
			method_8("FireFinishedTaskListCallbacks");
		}

		public void FireFinishedCallbacks()
		{
			method_8("FireFinishedCallbacks");
		}

		public Card GetTargetCardFromPowerTask(PowerTask task)
		{
			return method_14<Card>("GetTargetCardFromPowerTask", new object[1] { task });
		}
	}
}
